package com.qfedu.sem.dto;

import java.util.ArrayList;
import java.util.List;

import org.springframework.format.annotation.DateTimeFormat;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.qfedu.sem.po.Bug;
import com.qfedu.sem.po.BugVersion;
import com.qfedu.sem.po.Project;

import wo.common.util.WoUtil;
import wo.department.po.Staff;

/**
 * PO实体Bug对应的DTO父类.这是自动生成的代码,请不要修改.如要添加属性或者方法,请在其子类DTO中修改.
 * @author cailei
 */
class BugDto_ {

	/**
	 * 主键id
	 */
	private java.lang.String id;

	/**
	 * 属性title
	 */
	private java.lang.String title;
	/**
	 * 属性description
	 */
	private java.lang.String description;
	/**
	 * 属性level
	 */
	private java.lang.String level;
	/**
	 * 属性rate
	 */
	private java.lang.String rate;
	/**
	 * 属性image
	 */
	private java.lang.String image;
	/**
	 * 属性commitTime
	 */
	private java.util.Date commitTime;
	/**
	 * 属性fixTime
	 */
	private java.util.Date fixTime;
	/**
	 * 属性confirmBug
	 */
	private java.lang.Boolean confirmBug;
	/**
	 * 属性fixRemark
	 */
	private java.lang.String fixRemark;
	/**
	 * 属性testTime
	 */
	private java.util.Date testTime;
	/**
	 * 属性isOk
	 */
	private java.lang.Boolean isOk;
	/**
	 * 属性restRemark
	 */
	private java.lang.String restRemark;
	/**
	 * 属性currentNode
	 */
	private java.lang.String currentNode;

	
	/**
	 * 对应PO的committer属性,多对一关联实体Staff的主键值
	 */
	private java.lang.String committerId;

	/**
	 * 对应PO的committer属性,多对一关联实体Staff的name属性值
	 */
	private java.lang.String committerName;
	/**
	 * 对应PO的fixer属性,多对一关联实体Staff的主键值
	 */
	private java.lang.String fixerId;

	/**
	 * 对应PO的fixer属性,多对一关联实体Staff的name属性值
	 */
	private java.lang.String fixerName;
	/**
	 * 对应PO的tester属性,多对一关联实体Staff的主键值
	 */
	private java.lang.String testerId;

	/**
	 * 对应PO的tester属性,多对一关联实体Staff的name属性值
	 */
	private java.lang.String testerName;
	/**
	 * 对应PO的project属性,多对一关联实体Project的主键值
	 */
	private java.lang.String projectId;

	/**
	 * 对应PO的project属性,多对一关联实体Project的name属性值
	 */
	private java.lang.String projectName;
	/**
	 * 对应PO的version属性,多对一关联实体BugVersion的主键值
	 */
	private java.lang.String versionId;

	/**
	 * 对应PO的version属性,多对一关联实体BugVersion的no属性值
	 */
	private java.lang.String versionNo;
	/**
	 * 对应PO的fixVersion属性,多对一关联实体BugVersion的主键值
	 */
	private java.lang.String fixVersionId;

	/**
	 * 对应PO的fixVersion属性,多对一关联实体BugVersion的no属性值
	 */
	private java.lang.String fixVersionNo;
	/**
	 * 对应PO的testVersion属性,多对一关联实体BugVersion的主键值
	 */
	private java.lang.String testVersionId;

	/**
	 * 对应PO的testVersion属性,多对一关联实体BugVersion的no属性值
	 */
	private java.lang.String testVersionNo;

	/**
	 * 对应PO的bugLogs属性,一对多关联实体BugLog的主键值
	 */
	private List<BugLogDto> bugLogs = new ArrayList<BugLogDto>();
	
	/**
	 * 无参构造函数
	 */
	public BugDto_() {
	}

	/**
	 * 构造函数,通过po构造dto
	 */
	public BugDto_(Bug po) {
			// 设置主键id
		this.id = po.getId();
				// 设置属性title
		this.title = po.getTitle();
			// 设置属性description
		this.description = po.getDescription();
			// 设置属性level
		this.level = po.getLevel();
			// 设置属性rate
		this.rate = po.getRate();
			// 设置属性image
		this.image = po.getImage();
			// 设置属性commitTime
		this.commitTime = po.getCommitTime();
			// 设置属性fixTime
		this.fixTime = po.getFixTime();
			// 设置属性confirmBug
		this.confirmBug = po.getConfirmBug();
			// 设置属性fixRemark
		this.fixRemark = po.getFixRemark();
			// 设置属性testTime
		this.testTime = po.getTestTime();
			// 设置属性isOk
		this.isOk = po.getIsOk();
			// 设置属性restRemark
		this.restRemark = po.getRestRemark();
			// 设置属性currentNode
		this.currentNode = po.getCurrentNode();
		
				// 设置DTO的committer属性值
		if (po.getCommitter() != null) {
			this.committerId = po.getCommitter().getId();
			this.committerName = po.getCommitter().getName();
		}
			// 设置DTO的fixer属性值
		if (po.getFixer() != null) {
			this.fixerId = po.getFixer().getId();
			this.fixerName = po.getFixer().getName();
		}
			// 设置DTO的tester属性值
		if (po.getTester() != null) {
			this.testerId = po.getTester().getId();
			this.testerName = po.getTester().getName();
		}
			// 设置DTO的project属性值
		if (po.getProject() != null) {
			this.projectId = po.getProject().getId();
			this.projectName = po.getProject().getName();
		}
			// 设置DTO的version属性值
		if (po.getVersion() != null) {
			this.versionId = po.getVersion().getId();
			this.versionNo = po.getVersion().getNo();
		}
			// 设置DTO的fixVersion属性值
		if (po.getFixVersion() != null) {
			this.fixVersionId = po.getFixVersion().getId();
			this.fixVersionNo = po.getFixVersion().getNo();
		}
			// 设置DTO的testVersion属性值
		if (po.getTestVersion() != null) {
			this.testVersionId = po.getTestVersion().getId();
			this.testVersionNo = po.getTestVersion().getNo();
		}
				// 设置DTO的bugLogs属性值
		this.bugLogs = BugLogDto.getDtos(po.getBugLogs());
		}

	
	/**
	 * 主键id的getter方法
	 */
	public java.lang.String getId() {
		return this.id;
	}

	/**
	 * 主键id的setter方法
	 */
	public void setId(java.lang.String id) {
		this.id = id;
	}

	
	/**
	 * 属性title的getter方法
	 */
		public java.lang.String getTitle() {
		return this.title;
	}

	/**
	 * 属性title的setter方法
	 */
		public void setTitle(java.lang.String title) {
		this.title = title;
	}
	
	/**
	 * 属性description的getter方法
	 */
		public java.lang.String getDescription() {
		return this.description;
	}

	/**
	 * 属性description的setter方法
	 */
		public void setDescription(java.lang.String description) {
		this.description = description;
	}
	
	/**
	 * 属性level的getter方法
	 */
		public java.lang.String getLevel() {
		return this.level;
	}

	/**
	 * 属性level的setter方法
	 */
		public void setLevel(java.lang.String level) {
		this.level = level;
	}
	
	/**
	 * 属性rate的getter方法
	 */
		public java.lang.String getRate() {
		return this.rate;
	}

	/**
	 * 属性rate的setter方法
	 */
		public void setRate(java.lang.String rate) {
		this.rate = rate;
	}
	
	/**
	 * 属性image的getter方法
	 */
		public java.lang.String getImage() {
		return this.image;
	}

	/**
	 * 属性image的setter方法
	 */
		public void setImage(java.lang.String image) {
		this.image = image;
	}
	
	/**
	 * 属性commitTime的getter方法
	 */
		@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
		public java.util.Date getCommitTime() {
		return this.commitTime;
	}

	/**
	 * 属性commitTime的setter方法
	 */
		@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
		public void setCommitTime(java.util.Date commitTime) {
		this.commitTime = commitTime;
	}
	
	/**
	 * 属性fixTime的getter方法
	 */
		@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
		public java.util.Date getFixTime() {
		return this.fixTime;
	}

	/**
	 * 属性fixTime的setter方法
	 */
		@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
		public void setFixTime(java.util.Date fixTime) {
		this.fixTime = fixTime;
	}
	
	/**
	 * 属性confirmBug的getter方法
	 */
		public java.lang.Boolean getConfirmBug() {
		return this.confirmBug;
	}

	/**
	 * 属性confirmBug的setter方法
	 */
		public void setConfirmBug(java.lang.Boolean confirmBug) {
		this.confirmBug = confirmBug;
	}
	
	/**
	 * 属性fixRemark的getter方法
	 */
		public java.lang.String getFixRemark() {
		return this.fixRemark;
	}

	/**
	 * 属性fixRemark的setter方法
	 */
		public void setFixRemark(java.lang.String fixRemark) {
		this.fixRemark = fixRemark;
	}
	
	/**
	 * 属性testTime的getter方法
	 */
		@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
		public java.util.Date getTestTime() {
		return this.testTime;
	}

	/**
	 * 属性testTime的setter方法
	 */
		@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
		public void setTestTime(java.util.Date testTime) {
		this.testTime = testTime;
	}
	
	/**
	 * 属性isOk的getter方法
	 */
		public java.lang.Boolean getIsOk() {
		return this.isOk;
	}

	/**
	 * 属性isOk的setter方法
	 */
		public void setIsOk(java.lang.Boolean isOk) {
		this.isOk = isOk;
	}
	
	/**
	 * 属性restRemark的getter方法
	 */
		public java.lang.String getRestRemark() {
		return this.restRemark;
	}

	/**
	 * 属性restRemark的setter方法
	 */
		public void setRestRemark(java.lang.String restRemark) {
		this.restRemark = restRemark;
	}
	
	/**
	 * 属性currentNode的getter方法
	 */
		public java.lang.String getCurrentNode() {
		return this.currentNode;
	}

	/**
	 * 属性currentNode的setter方法
	 */
		public void setCurrentNode(java.lang.String currentNode) {
		this.currentNode = currentNode;
	}

	/**
	 * 属性committerId的getter方法
	 */
	public java.lang.String getCommitterId() {
		return committerId;
	}

	/**
	 * 属性committerId的setter方法
	 */
	public void setCommitterId(java.lang.String committerId) {
		this.committerId = committerId;
	}

	/**
	 * 属性committerName的getter方法
	 */
	public java.lang.String getCommitterName() {
		return committerName;
	}

	/**
	 * 属性committerName的setter方法
	 */
	public void setCommitterName(java.lang.String committerName) {
		this.committerName = committerName;
	}
	/**
	 * 属性fixerId的getter方法
	 */
	public java.lang.String getFixerId() {
		return fixerId;
	}

	/**
	 * 属性fixerId的setter方法
	 */
	public void setFixerId(java.lang.String fixerId) {
		this.fixerId = fixerId;
	}

	/**
	 * 属性fixerName的getter方法
	 */
	public java.lang.String getFixerName() {
		return fixerName;
	}

	/**
	 * 属性fixerName的setter方法
	 */
	public void setFixerName(java.lang.String fixerName) {
		this.fixerName = fixerName;
	}
	/**
	 * 属性testerId的getter方法
	 */
	public java.lang.String getTesterId() {
		return testerId;
	}

	/**
	 * 属性testerId的setter方法
	 */
	public void setTesterId(java.lang.String testerId) {
		this.testerId = testerId;
	}

	/**
	 * 属性testerName的getter方法
	 */
	public java.lang.String getTesterName() {
		return testerName;
	}

	/**
	 * 属性testerName的setter方法
	 */
	public void setTesterName(java.lang.String testerName) {
		this.testerName = testerName;
	}
	/**
	 * 属性projectId的getter方法
	 */
	public java.lang.String getProjectId() {
		return projectId;
	}

	/**
	 * 属性projectId的setter方法
	 */
	public void setProjectId(java.lang.String projectId) {
		this.projectId = projectId;
	}

	/**
	 * 属性projectName的getter方法
	 */
	public java.lang.String getProjectName() {
		return projectName;
	}

	/**
	 * 属性projectName的setter方法
	 */
	public void setProjectName(java.lang.String projectName) {
		this.projectName = projectName;
	}
	/**
	 * 属性versionId的getter方法
	 */
	public java.lang.String getVersionId() {
		return versionId;
	}

	/**
	 * 属性versionId的setter方法
	 */
	public void setVersionId(java.lang.String versionId) {
		this.versionId = versionId;
	}

	/**
	 * 属性versionNo的getter方法
	 */
	public java.lang.String getVersionNo() {
		return versionNo;
	}

	/**
	 * 属性versionNo的setter方法
	 */
	public void setVersionNo(java.lang.String versionNo) {
		this.versionNo = versionNo;
	}
	/**
	 * 属性fixVersionId的getter方法
	 */
	public java.lang.String getFixVersionId() {
		return fixVersionId;
	}

	/**
	 * 属性fixVersionId的setter方法
	 */
	public void setFixVersionId(java.lang.String fixVersionId) {
		this.fixVersionId = fixVersionId;
	}

	/**
	 * 属性fixVersionNo的getter方法
	 */
	public java.lang.String getFixVersionNo() {
		return fixVersionNo;
	}

	/**
	 * 属性fixVersionNo的setter方法
	 */
	public void setFixVersionNo(java.lang.String fixVersionNo) {
		this.fixVersionNo = fixVersionNo;
	}
	/**
	 * 属性testVersionId的getter方法
	 */
	public java.lang.String getTestVersionId() {
		return testVersionId;
	}

	/**
	 * 属性testVersionId的setter方法
	 */
	public void setTestVersionId(java.lang.String testVersionId) {
		this.testVersionId = testVersionId;
	}

	/**
	 * 属性testVersionNo的getter方法
	 */
	public java.lang.String getTestVersionNo() {
		return testVersionNo;
	}

	/**
	 * 属性testVersionNo的setter方法
	 */
	public void setTestVersionNo(java.lang.String testVersionNo) {
		this.testVersionNo = testVersionNo;
	}
	/**
	 * 属性bugLogs的setter方法
	 */
	public List<BugLogDto> getBugLogs() {
		return bugLogs;
	}

	/**
	 * 属性bugLogs的setter方法
	 */
	public void setBugLogs(List<BugLogDto> bugLogs) {
		this.bugLogs = bugLogs;
	}

	/**
	 * 将当前对象转化为po
	 * @return
	 */
	public Bug createPO() {
		Bug po = new Bug();
			// 设置PO主键id
					if (WoUtil.isEmpty(this.id)) {
				po.setId(java.util.UUID.randomUUID().toString());
			} else {
				po.setId(this.id);
			}
						// 设置PO属性title
				po.setTitle(this.title);
					// 设置PO属性description
				po.setDescription(this.description);
					// 设置PO属性level
				po.setLevel(this.level);
					// 设置PO属性rate
				po.setRate(this.rate);
					// 设置PO属性image
				po.setImage(this.image);
					// 设置PO属性commitTime
				po.setCommitTime(this.commitTime);
					// 设置PO属性fixTime
				po.setFixTime(this.fixTime);
					// 设置PO属性confirmBug
				po.setConfirmBug(this.confirmBug);
					// 设置PO属性fixRemark
				po.setFixRemark(this.fixRemark);
					// 设置PO属性testTime
				po.setTestTime(this.testTime);
					// 设置PO属性isOk
				po.setIsOk(this.isOk);
					// 设置PO属性restRemark
				po.setRestRemark(this.restRemark);
					// 设置PO属性currentNode
				po.setCurrentNode(this.currentNode);
				
				// 设置关系数据
		Staff committer = new Staff();
		if (!WoUtil.isEmpty(committerId)) {
			committer.setId(this.committerId);
			po.setCommitter(committer);
		}
			// 设置关系数据
		Staff fixer = new Staff();
		if (!WoUtil.isEmpty(fixerId)) {
			fixer.setId(this.fixerId);
			po.setFixer(fixer);
		}
			// 设置关系数据
		Staff tester = new Staff();
		if (!WoUtil.isEmpty(testerId)) {
			tester.setId(this.testerId);
			po.setTester(tester);
		}
			// 设置关系数据
		Project project = new Project();
		if (!WoUtil.isEmpty(projectId)) {
			project.setId(this.projectId);
			po.setProject(project);
		}
			// 设置关系数据
		BugVersion version = new BugVersion();
		if (!WoUtil.isEmpty(versionId)) {
			version.setId(this.versionId);
			po.setVersion(version);
		}
			// 设置关系数据
		BugVersion fixVersion = new BugVersion();
		if (!WoUtil.isEmpty(fixVersionId)) {
			fixVersion.setId(this.fixVersionId);
			po.setFixVersion(fixVersion);
		}
			// 设置关系数据
		BugVersion testVersion = new BugVersion();
		if (!WoUtil.isEmpty(testVersionId)) {
			testVersion.setId(this.testVersionId);
			po.setTestVersion(testVersion);
		}
			return po;
	}

	/**
	 * @param po
	 */
	public void updatePO(Bug po) {
			// 设置PO属性title
		po.setTitle(this.title);
			// 设置PO属性description
		po.setDescription(this.description);
			// 设置PO属性level
		po.setLevel(this.level);
			// 设置PO属性rate
		po.setRate(this.rate);
			// 设置PO属性image
		po.setImage(this.image);
			// 设置PO属性commitTime
		po.setCommitTime(this.commitTime);
			// 设置PO属性fixTime
		po.setFixTime(this.fixTime);
			// 设置PO属性confirmBug
		po.setConfirmBug(this.confirmBug);
			// 设置PO属性fixRemark
		po.setFixRemark(this.fixRemark);
			// 设置PO属性testTime
		po.setTestTime(this.testTime);
			// 设置PO属性isOk
		po.setIsOk(this.isOk);
			// 设置PO属性restRemark
		po.setRestRemark(this.restRemark);
			// 设置PO属性currentNode
		po.setCurrentNode(this.currentNode);
		
				// 设置PO的committer属性:M21
		if (!WoUtil.isEmpty(committerId)) {
			Staff committer = new Staff();
			committer.setId(this.committerId);
			po.setCommitter(committer);
		} else {
			po.setCommitter(null);
		}
			// 设置PO的fixer属性:M21
		if (!WoUtil.isEmpty(fixerId)) {
			Staff fixer = new Staff();
			fixer.setId(this.fixerId);
			po.setFixer(fixer);
		} else {
			po.setFixer(null);
		}
			// 设置PO的tester属性:M21
		if (!WoUtil.isEmpty(testerId)) {
			Staff tester = new Staff();
			tester.setId(this.testerId);
			po.setTester(tester);
		} else {
			po.setTester(null);
		}
			// 设置PO的project属性:M21
		if (!WoUtil.isEmpty(projectId)) {
			Project project = new Project();
			project.setId(this.projectId);
			po.setProject(project);
		} else {
			po.setProject(null);
		}
			// 设置PO的version属性:M21
		if (!WoUtil.isEmpty(versionId)) {
			BugVersion version = new BugVersion();
			version.setId(this.versionId);
			po.setVersion(version);
		} else {
			po.setVersion(null);
		}
			// 设置PO的fixVersion属性:M21
		if (!WoUtil.isEmpty(fixVersionId)) {
			BugVersion fixVersion = new BugVersion();
			fixVersion.setId(this.fixVersionId);
			po.setFixVersion(fixVersion);
		} else {
			po.setFixVersion(null);
		}
			// 设置PO的testVersion属性:M21
		if (!WoUtil.isEmpty(testVersionId)) {
			BugVersion testVersion = new BugVersion();
			testVersion.setId(this.testVersionId);
			po.setTestVersion(testVersion);
		} else {
			po.setTestVersion(null);
		}
		}
}
